5 a. What are SeqRecord objects in Biopython, and how can you use them to store DNA sequences 
along with annotations such as gene start and end positions, descriptions, and other features? How 
can annotations be added, modified, and manipulated in a SeqRecord object? 

The SeqRecord object in Biopython is a key data structure that is used to represent sequence data (such as 
DNA, RNA, or protein sequences) along with associated metadata (annotations and features). It stores both 
the sequence itself and additional information about that sequence, which is essential for bioinformatics 
analyses. 

A SeqRecord object consists of the following main components: 

1. Sequence (Seq): This is the actual sequence data, which can be a DNA, RNA, or protein sequence. 
2. ID: A unique identifier for the sequence. 
3. Name: A simple name for the sequence (often used to refer to it in a simpler way). 
4. Description: A short description or header that provides additional context about the sequence. 
5. Annotations: A dictionary containing metadata about the sequence, such as gene names, functions, 
locations, references, and other relevant biological information. 
6. Features: These are more specific locations or regions within the sequence (e.g., exons, coding 
regions), each of which can be annotated with attributes such as the type of feature (e.g., gene, 
CDS) and additional metadata. 


Working with Annotations: 

● Adding Annotations: You can add annotations by modifying the annotations dictionary in a 
SeqRecord. For example, you can add a gene name or a description of the sequence's function. 

● Modifying Annotations: Once annotations are added, they can be modified directly by updating 
the corresponding dictionary entries. 

● Manipulating Features: Features such as gene positions or functional regions can be added or 
modified in the features list of a SeqRecord object. Each feature can store attributes such as 
location, type (e.g., "gene", "CDS"), and qualifiers (e.g., gene name, function).